home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr46 / unchain2.zip / UNCHAIN.DOC < prev    next >
Text File  |  1993-06-01  |  9KB  |  282 lines

  1.   ══════════════════════════════════════════════════════════════════════════
  2.  
  3.                      UNCHAIN   Planar VGA Mode 13h Enforcer
  4.                               v2.1  June 1, 1993
  5.  
  6.               Copyright 1993 Colin Buckley.  All Rights Reserved.
  7.  
  8.   Use or distribute freely in any environment. In other words, it's FreeWare
  9.  
  10.   ══════════════════════════════════════════════════════════════════════════
  11.  
  12.  
  13. Introduction
  14. ════════════
  15.  
  16.     Borland development tools will only remember which video mode you are
  17. in, it doesn't save any possible video card register changes you might have
  18. made.
  19.  
  20.     There is a great deal of hype over "Mode X", but if you don't own
  21. a secondary video card (monochrome), it's impossible to debug in a Borland
  22. IDE.
  23.  
  24.     I asked if someone had written a program like this on rec.games.programmer
  25. a Usenet newsgroup, and was ignored.  It surprised me because every 2nd message
  26. is regarding "Mode X".
  27.  
  28.     I wrote UNCHAIN v1.O that only forced 320x200x256x4.  It was the only
  29. mode I used, and no one else seemed interested in it anyways.  I was just
  30. going to keep it for myself, but I thought what the hell and posted the
  31. source in r.g.p.
  32.  
  33.     UNCHAIN v2.O should support all Planar VGA modes in the various resolutions,
  34. but since I only use 320x200, they have not been tested at all.  I've also
  35. added Palette saving and restoring, and viewing of video pages.
  36.  
  37.     It is all completely transparent to the user, only the viewing of video
  38. pages is interactive as it should be.
  39.  
  40.     UNCHAIN can also restore your palette.  Palette restoring works
  41. indepentently of the VGA register savings, so you can use UNCHAIN to restore
  42. the palette in regular Mode 13h aswell.
  43.  
  44.     This is v2.1, the help screen was updated, some minor bugs were fixed,
  45. memory resizing is dynamic, a reset command was added, palette saving/restoring
  46. now affecting colour 255, palette saving/restoring works for regular Mode 13h,
  47. Video page viewing corrected, the keyboard ISR fixed, and the documentation was
  48. heavily updated.
  49.  
  50.  
  51. Usage
  52. ═════
  53.  
  54.     UNCHAIN requires <3K of memory.
  55.  
  56.     If you use...
  57.  
  58.       >TD YourGame.EXE <YourGame commandline options>
  59.  
  60.     then use...
  61.  
  62.       >UNCHAIN TD.EXE YourGame.EXE <YourGame commandline options>
  63.  
  64.     Note the addition of the extension for TD.  If TD.EXE is not in the
  65. current directory, you will have to use the entire filename, such as...
  66.  
  67.       >UNCHAIN C:\TD\TD.EXE YourGame.EXE <YourGame commandline options>
  68.  
  69.     UNCHAIN will spawn TD and Turbo Debugger will load your game and operate
  70. as usual.
  71.  
  72.     You must add some assembler instructions in order for this program to
  73. work transparently.  If the instructions are not present, the program
  74. will act like it was not loaded.
  75.  
  76.     If you are unfamiliar with assembler, in Pascal use..
  77.  
  78.     ASM
  79.       Assembler Instructions
  80.     End;
  81.  
  82.     In C use...
  83.  
  84.     asm{
  85.       Assembler Instructions
  86.     }
  87.  
  88.     After you have entered Mode 13h and modified the VGA registers, use the
  89. following code...
  90.  
  91.       MOV  AX,0CB00h
  92.       INT  10h
  93.  
  94.     The above code is the only really necessary instructions.  You do not
  95. have to add the following instructions unless you want the following features
  96. aswell.
  97.  
  98.  
  99.     To reset the VGA registers saved by the above command, use the following
  100. code...
  101.  
  102.       MOV  AX,0CB06h
  103.       INT  10h
  104.  
  105.     The purpose of this command is to allow you to use Mode 13h and unchained
  106. modes together.  Place the above code before you enter Mode 13h, so
  107. UNCHAIN doesn't restore the VGA registers.  If you use multiple resolutions
  108. in your program, then it would be wise to use the above code before you
  109. enter each one, but not necessary.
  110.  
  111.  
  112.     Every time you set the palette use the following code..
  113.  
  114.       MOV  AX,0CB05h
  115.       INT  10h
  116.  
  117.     If you do Screen Fades then they will run at half speed because UNCHAIN
  118. gets the palette everytime, assuming you add the above code to your SetPalette
  119. routine and it is called by your screen fade.  They will work at full speed
  120. when UNCHAIN is not loaded.
  121.  
  122.     I only use one palette per game, so I actually use the above code
  123. as part of the game after I set the palette.  It's not part of the SetPalette
  124. code, so I can avoid the fade slow down problem.
  125.  
  126.     Palette restoring works indepentently of the VGA register savings, so
  127. you can use UNCHAIN to restore the palette in regular Mode 13h aswell.
  128.  
  129.  
  130.     In order to view Video Pages, you must tell UNCHAIN the offsets of upto 4
  131. pages, then while looking at the USER SCREEN (ALT-F5), you may press CTRL-1
  132. for Page 1, CTRL-2 for Page 2, CTRL-3 for Page 3, CTRL-4 for Page 4.
  133.  
  134.     To tell UNCHAIN what offset Page 1 is at use the following code..
  135.  
  136.       MOV  BX,Page1Offset
  137.       MOV  AX,0CB01h
  138.       INT  10h
  139.  
  140.     To tell UNCHAIN what offset Page 2 is at use the following code..
  141.  
  142.       MOV  BX,Page2Offset
  143.       MOV  AX,0CB02h
  144.       INT  10h
  145.  
  146.     To tell UNCHAIN what offset Page 3 is at use the following code..
  147.  
  148.       MOV  BX,Page3Offset
  149.       MOV  AX,0CB03h
  150.       INT  10h
  151.  
  152.     To tell UNCHAIN what offset Page 4 is at use the following code..
  153.  
  154.       MOV  BX,Page4Offset
  155.       MOV  AX,0CB04h
  156.       INT  10h
  157.  
  158.     The following default offsets are set until you change them.
  159.  
  160.     Page 1 defaults to offset 0000          (Page 1 in 320x200)
  161.     Page 2 defaults to offset 16000         (Page 2 in 320x200)
  162.     Page 3 defaults to offset 32000         (Page 3 in 320x200)
  163.     Page 4 defaults to offset 48000         (Page 4 in 320x200)
  164.  
  165.     *********************************************************************
  166.     IMPORTANT: DO NOT PRESS CTRL-x UNLESS YOU ARE VIEWING THE USER SCREEN
  167.     *********************************************************************
  168.  
  169.     If you use a library, it would be best to add the code directly to
  170. the library routines so it's always set up correctly.  If UNCHAIN is not
  171. loaded the added instructions should do absolutely nothing.
  172.  
  173.     **************************************************************************
  174.     NOTE: I HAVE NOT CHECKED THE INTERRUPT LIST IF AH=CB INT 10h DOES ANYTHING
  175.     **************************************************************************
  176.  
  177.  
  178. Applications that Work
  179. ══════════════════════
  180.  
  181.     I have only tested UNCHAIN with the following programs, and it works
  182. perfectly.  There is no screen corruption at all.
  183.  
  184.     Turbo Debugger v3.2:       Graphics Save = On
  185.                                Display Method = Swap Pages
  186.  
  187.     Turbo Profiler v2.2:       Graphics Save = On
  188.                                Display Method = Swap Pages
  189.  
  190.     Turbo Pascal v6:           Graphics Save = On
  191.  
  192.     Borland Pascal v7:         Graphics Save = On
  193.  
  194.     For TD and TPROF it would be wise to save your setup as the default config
  195. file, rather then updating an EXE, so that all the TD and TPROF incarnations
  196. will be setup correctly.
  197.  
  198.     Please report all applications that work with UNCHAIN to me so I can
  199. update this list.  Please include the options necessary for it to work.
  200. My address is at the end of this file.
  201.  
  202.  
  203. Problems
  204. ════════
  205.  
  206. Problem:
  207.  
  208.     UNCHAIN reports "Error: Can not execute file!"
  209.  
  210. Solution:
  211.  
  212.     COMMAND.COM is not executing the file, rather UNCHAIN is spawning it.
  213. Therefore you must specify the extension of the file you wish to execute,
  214. along with the entire path to the file, if it is not in the current directory.
  215.  
  216. For example...
  217.  
  218.     If you use...
  219.  
  220.       >TD YourGame.EXE <YourGame commandline options>
  221.  
  222.     ...and TD.EXE is in your path as being in C:\TD, you will have to use...
  223.  
  224.       >UNCHAIN C:\TD\TD.EXE YourGame.EXE <YourGame commandline options>
  225.  
  226.     ...unless it is in the current directory, in which case...
  227.  
  228.       >UNCHAIN TD.EXE YourGame.EXE <YourGame commandline options>
  229.  
  230.     ...is fine.
  231.  
  232.  
  233. Problem:
  234.  
  235.     UNCHAIN is running but there are 4-16 smaller screens instead of the regular
  236. full screen.
  237.  
  238. Solution:
  239.  
  240.     UNCHAIN can not remove Chain 4 from Mode 13h, because you haven't added the
  241. assembler instructions to your code that UNCHAIN needs to operate transparently.
  242.  
  243.  
  244. Problem:
  245.  
  246.     UNCHAIN is running, I see the regular full screen, but portions of the
  247. screen become corrupt.
  248.  
  249. Solution:
  250.  
  251.     Change the display method the application UNCHAIN is spawning to use Swap
  252. Pages (which saves and restores the text screen to conventional memory, rather
  253. then VGA display memory) and set Graphics Save to On.  The Borland applications
  254. I run have display methods as a configuration option, with the exception
  255. of Borland Pascal, but it's method is still UNCHAIN friendly.
  256.  
  257.     If you're not using a Borland application, play around with the display
  258. methods, if that is not an option, or you still can't correct the screen,
  259. you'll have to live with it.
  260.  
  261.  
  262. Credits
  263. ═══════
  264.  
  265.     The Planar Mode set routines were influenced by Themie's XLIB,
  266. who based his on Michael Abrash's, who got his from public domain code courtesy
  267. of John Bridges.
  268.  
  269.     The Video Page display routine was taken from John Slagel's XBLT as it
  270. used Display Enable.
  271.  
  272.     Everything else was pieced together from various code I had written in
  273. the past.
  274.  
  275.  
  276. Colin Buckley
  277. Toronto, Ontario, Canada.
  278.  
  279. colin.buckley@rose.com (or route me on RIME at Node 1047 in GameDesign)
  280.  
  281.   ══════════════════════════════════════════════════════════════════════════
  282.